home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
gnu
/
gnulib
/
libsrc98.zoo
/
div.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-03-29
|
786b
|
48 lines
/*
* div
* this one should be compat with -fpcc-struct-return
*
* ++jrb bammi@dsrgsun.ces.cwru.edu
*/
#include <stdlib.h>
#ifdef __GNUC__
long __divsi3(long, long); /* returns: quot in d0.l remainder in d1.l */
#ifdef __MSHORT__
div_t
div(int num, int denom)
{
div_t result;
__asm__ volatile("\
divs %4,%3 | %3/%2 must be a data reggie
movw %2,%0 | %2<31:16> == rem %2<15:0> == quot
swap %2
movw %2,%1"
: "=g"(result.quot), "=g"(result.rem), "=d"((long)num)
: "2"((long)num), "d"(denom)
);
return result;
}
#else /* !__MSHORT__ */
__asm__(".stabs \"_div\",5,0,0,_ldiv");
#endif
#else /* !__GNUC__ */
div_t
div(num, denom)
int num, denom;
{
div_t res;
res.quot = num / denom;
res.rem = num % denom;
return res;
}
#endif /* !__GNUC__ */